<?php
session_start();
require "include/dbms.inc.php";
require "include/template.inc.php";
require "include/setcontents.inc.php";
require "include/accesscontrol.inc.php";

$access=accesscontrol::controllo_privilegi();
//restituisce 0 se l'utente non ha i privilegi per un servizio e visualizza una pagina di errore, tranne in questo caso.
//infatti lo script prevede uan gestione differenziata del carrello a seconda che l'utente sia registrato o meno. nel primo caso
//lo stato del carrello viene memorizzato nel db.

    function displaydefault(){
        global $access;
        if (!isset($_GET['by'])){
                $_GET['by']="nome";
            }
        if ($access){//utente loggato
            $body = new Template("dtml/carrello.html");
            $result = setcontents::getResult(
                    "SELECT prodotto.id, prodotto.nome,prodotto.quantita,
                            prodotto.prezzo, prodotto.descrizione, marca.nome as marca
                       FROM prodotto
                  LEFT JOIN marca
                         ON prodotto.marca = marca.id
                  LEFT JOIN carrello
                         ON id_prod = prodotto.id
                      WHERE email_utente = '{$_SESSION['user']['email']}'
                   ORDER BY ".$_GET['by']." ".$_GET['ord']);
        }else{//utente non loggato
            $body = new Template("dtml/carrello_public.html");
            if (isset($_COOKIE['carrello'])){
                 $id_prod=explode("|",$_COOKIE['carrello']);//estraggo gli id dalla stringa memorizzata nel cookie
                 $c=0;
                 foreach ($id_prod as $k=>$v){
                     $result = setcontents::getResult(
                        "SELECT prodotto.id, prodotto.nome,prodotto.quantita,
                                prodotto.prezzo, prodotto.descrizione, marca.nome as marca
                           FROM prodotto
                      LEFT JOIN marca
                             ON prodotto.marca = marca.id
                          WHERE prodotto.id = '{$v}'");
                     if (isset($result)){
                        $prodotti[$c]=$result[0];
                        $c++;
                     }
                     
                 }
                 if (isset($prodotti)){
                     sort($prodotti);
                 }
                 $result=$prodotti;
                }
            }


        $body->setContent("prodotti_carrello", $result);
        return $body;
    }

    switch($_POST['op']){
        /* ----- CASO IN CUI SI AGGIUNGE UN PRODOTTO NEL CARRELLO -----*/
        case 'aggiungi':
            switch ($access){
                case '1':
                    $oid = mysql_query("INSERT INTO carrello (email_utente, id_prod)
                                             VALUES ('{$_SESSION['user']['email']}',
                                                    '{$_POST['prodotto']}')");
                    if(!oid){
                        $message = "Si è verificato un errore nel database: ".mysql_error();
                        $style = "alert";
                        break;
                    }
                    break;

                default:
                    if (!isset($_COOKIE['carrello'])){
                        setcookie("carrello", $_POST['prodotto'], time()+(3600*24*7));
                    }else{

                        if (!strstr($_COOKIE['carrello'],$_POST['prodotto'])){
                            $id_prod=$_COOKIE['carrello']."|".$_POST['prodotto'];
                            setcookie("carrello", $id_prod, time()+(3600*24*7));
                        }
                    }


            }

            Header("Location:{$_SERVER['HTTP_REFERER']}");
            break;

        /* ----- SI PROCEDE ALL'ACQUISTO DEI PRODOTTI PRESENTI NEL CARRELLO -----*/
        case 'acquista':
            // Prima si visualizza un riepilogo dell'ordine
            switch($_POST['page']){
                case '0':
                    $body = new Template("dtml/riepilogo_acquisto.html");
                    $result = setcontents::getResult(
                            "SELECT prodotto.id, prodotto.nome,prodotto.quantita,
                                    prodotto.prezzo, prodotto.descrizione, marca.nome as marca
                               FROM prodotto
                          LEFT JOIN marca
                                 ON prodotto.marca = marca.id
                          LEFT JOIN carrello
                                 ON id_prod = prodotto.id
                              WHERE email_utente = '{$_SESSION['user']['email']}'
                           ORDER BY prodotto.nome");

                    foreach($result as $k => $v){
                        $result[$k]['quantita'] = $_POST['quantita'][$k];
                    }

                    $body->setContent("prodotti_carrello", $result);
                    $body->setContent("nome", $_SESSION['user']['nome']);
                    $body->setContent("cognome", $_SESSION['user']['cognome']);
                    $body->setContent("cod_fisc", $_SESSION['user']['cod_fisc']);
                    $body->setContent("indirizzo", $_SESSION['user']['indirizzo']);
                    $body->setContent("citta", $_SESSION['user']['citta']);
                    $body->setContent("cap", $_SESSION['user']['cap']);
                    $body->setContent("provincia", $_SESSION['user']['provincia']);
                    break;

            // Si riceve conferma dell'acquisto effettuato
                case '1':
                    $data = time();
                    $prodotti = $_POST['prodotto'];
                    $quantita = $_POST['quantita'];
                    $prezzo = $_POST['prezzo'];

                    // inserisco nello storico acquisti dell'utente gli acquisti appena effettuati
                    foreach($prodotti as $k => $v){

                        // Aggiorno la quantità del prodotto disponibile a seconda di quanto ne ha comprato il cliente
                        $sel_quant = mysql_query("
                            SELECT quantita,nome
                              FROM prodotto
                             WHERE id = '{$v}'");

                        if(!$sel_quant){
                            $body = displaydefault();
                            $message = "Si è riscontrato un errore nel database durante l'acquisto: ".mysql_error();
                            $style = "alert";
                            break;
                        }

                        $quant = mysql_fetch_array($sel_quant);



                        $nuova_quantita = $quant['quantita'] - $quantita[$k];

                        $ins_quant = mysql_query("
                            UPDATE prodotto
                               SET quantita = '{$nuova_quantita}'
                             WHERE id = '{$v}'");

                        if(!$ins_quant){
                            $body = displaydefault();
                            $message = "Si è riscontratoo un errore nel database durante l'acquisto: ".mysql_error();
                            $style = "alert";
                            break;
                        }

                        $utente = addslashes($_SESSION['user']['email']);
                        $nome_prod = addslashes($quant['nome']);
                        $insert = mysql_query("
                            INSERT INTO storico_acquisti (email_utente, nome_prod, q_pren, data_acq, spesa)
                                 VALUES ('{$utente}',
                                        '{$nome_prod}',
                                        '{$quantita[$k]}',
                                        '{$data}',
                                        '{$prezzo[$k]}')");

                        if(!$insert){
                            $body = displaydefault();
                            $message = "Si è riscontrato un erroreoo nel database durante l'acquisto: ".mysql_error();
                            $style = "alert";
                            break;
                        }


                        // Elimino il prodotto dal carrello dell'utente
                        $delete = mysql_query("
                            DELETE FROM carrello
                                  WHERE email_utente = '{$_SESSION['user']['email']}' and id_prod = '{$v}'");

                        if(!$delete){
                            $body = displaydefault();
                            $message = "Si è riscontrato un errore nel database durante l'acquisto: ".mysql_error();
                            $style = "alert";
                            break;
                        }
                        
                        if (isset($_COOKIE['carrello'])){
                            //eliminazione dalla stringa di id contenuta cel cookie
                            $id_prod=explode("|",$_COOKIE['carrello']);                            
                            $pos=array_search($v, $id_prod);
                            unset($id_prod[$pos]);                                
                            if(count($id_prod)){//ricostruisci la stringa da inserire nel cookie
                                $elim=array_values($id_prod);
                                foreach ($elim as $k=>$v){
                                    if($k!=0){
                                        $cookie.="|".$v;
                                    }else{
                                        $cookie=$v;
                                    }
                                }
                                setcookie("carrello","", time()-3600);
                                setcookie("carrello", $cookie, time()+(3600*24*7));
                                $_COOKIE['carrello']=$cookie;
                            }else{//se non ci sono più elementi elimina l'array e il cookie
                                unset($id_prod);
                                setcookie("carrello","", time()-3600);
                                $_COOKIE['carrello']=$cookie;
                        }
                        }
                        if($style == "alert"){
                            break;
                        }
                    }
                    $body = new Template("dtml/acquisto_completato.html");
                    break;

                default:
                    $body = displaydefault();
                    $message = "Non puoi acquistare prodotti se prima non li aggiungi al carrello";
                    $style = "alert";
                    break;
            }
            break;

        /* ----- CASO IN CUI SI ELIMINA UN PRODOTTO DAL CARRELLO -----*/
        case 'elimina':
            if (!isset($_POST['check'])){
                $message="Nessun prodotto selezionato";
                $style="alert";
                }else{
                    $message="Eliminazione conclusa con successo";
                    $style="message";
                    if ($access){//eliminazione dal db
                        $prodotto = $_POST['check'];
                        foreach ($prodotto as $k => $v){

                        $oid=mysql_query("
                                DELETE FROM carrello
                                      WHERE id_prod ='{$v}' and email_utente ='{$_SESSION['user']['email']}'");

                        if (!$oid){
                            $body = displaydefault();
                            $message="Errore durante l'eliminazione".mysql_error();
                            $style="alert";
                            break;
                            }
                        }
                        
                    }
                    if (isset($_COOKIE['carrello'])){
                        //eliminazione dalla stringa di id contenuta cel cookie
                    $prodotto = $_POST['check'];
                    $id_prod=explode("|",$_COOKIE['carrello']);
                    foreach ($prodotto as $k => $v){//elimino il prodotto
                        $pos=array_search($v, $id_prod);
                        unset($id_prod[$pos]);
                    }
                    if(count($id_prod)){//ricostruisci la stringa da inserire nel cookie
                        $elim=array_values($id_prod);
                        foreach ($elim as $k=>$v){
                            if($k!=0){
                                $cookie.="|".$v;
                            }else{
                                $cookie=$v;
                            }
                        }
                        setcookie("carrello","", time()-3600);
                        setcookie("carrello", $cookie, time()+(3600*24*7));
                        $_COOKIE['carrello']=$cookie;
                    }else{//se non ci sono più elementi elimina l'array e il cookie
                        unset($id_prod);
                        setcookie("carrello","", time()-3600);
                        $_COOKIE['carrello']=$cookie;
                        }
                    }
                }
                

            $body = displaydefault();
            break;

        default:
            $body = displaydefault();
            break;
    }

setcontents::setTemplate();
setcontents::setMenu($message,$style);
setcontents::setBody($body);

$main->close();
?>
